package com.yangwudi.config;

import com.yangwudi.interceptor.DemoInterceptor;
import com.yangwudi.interceptor.TokenInterceptor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 * 配置类
 */
@Configuration
public class Webconfig implements WebMvcConfigurer {
//    @Autowired
//    private DemoInterceptor demoInterceptor;
    @Autowired
    private TokenInterceptor tokenInterceptor;
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(tokenInterceptor).addPathPatterns("/**")//拦截所有请求
                .excludePathPatterns("/login");//不拦截哪些请求
    }
}


//拦截器-拦截路径
//拦截路径: /*        一级路径        能匹配/depts,/emps,/users.不能匹配/depts/1,/depts/add,/depts/delete
//        /**         任意级路径       能匹配/depts,/depts/1,/depts/add,/depts/delete
//        /depts/*    /depts下的一级路径        能匹配/depts/1,/depts/add,/depts/delete，不能匹配/depts，/depts/1/2
//        /depts/**   /depts下的任意级路径       能匹配/depts,/depts/1,/depts/1/2,/depts/add,/depts/delete


//拦截器-执行流程
//过滤器、拦截器同时存在时: 先执行过滤器(Servlet提供，范围更大)，再执行拦截器(Spring提供)
//浏览器 - > Filter - > Interceptor - > 放行 - > ------  - >Interceptor -> Filter -> 浏览器

//Filter与Inxterceptor区别:
//1.接口规范不同: 过滤器需要实现Filter接口，拦截器需要实现HandlerInterceptor接口
//2.拦截范围不同: 过滤器Filter可以拦截任意资源，拦截器Interceptor只会拦截Spring环境中的资源